package com.beiming.libra.domain.dto.requestdto;

import java.io.Serializable;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

import com.beiming.libra.common.constants.LibraConst;
import com.beiming.libra.common.constants.ValidateMessage;
import com.beiming.libra.common.enums.UserTypeEnum;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 用户注册（完善信息）
 */
@ApiModel("用户注册（完善信息）dto")
@Data
public class UserRegisterInfoRequestDTO implements Serializable {

  /**
   * 手机号
   */
  @ApiModelProperty(value = "手机号", required = true)
  @NotBlank(message = ValidateMessage.MOBILE_PHONE_NOT_BLANK)
  @Pattern(regexp = LibraConst.REGEX_MOBILE_EXACT, message = ValidateMessage.MOBILE_PHONE_INCORRECT)
  private String mobilePhone;
  /**
   * 用户类型(PEOPLE[个人],COMPANY[企业],SPECIAL[专项用户],SECRETARY[办案秘书],
   * ARBITRATION[仲裁员],FINANCE[财务],LEADER[领导],ADMIN[系统管理员])
   * 
   */
  @ApiModelProperty(value = "用户类型(PEOPLE[个人],COMPANY[企业],SPECIAL[专项用户],SECRETARY[办案秘书], ARBITRATION[仲裁员],FINANCE[财务],LEADER[领导],ADMIN[系统管理员])", required = true)
  @NotNull(message = ValidateMessage.USER_TYPE_NOT_BLANK)
  private UserTypeEnum userType;
  /**
   * 邮箱
   */
  @ApiModelProperty(value = "邮箱", required = true)
  @NotBlank(message = ValidateMessage.EMAIL_NOT_BLANK)
  @Pattern(regexp = LibraConst.REGEX_EMAIL, message = ValidateMessage.EMAIL_INCORRECT)
  private String email;
  /**
   * 邮箱验证码
   */
  @ApiModelProperty(value = "邮箱验证码", required = true)
  @NotBlank(message = ValidateMessage.EMAIL_CODE_NOT_BLANK)
  private String emailCode;

  /**
   * 姓名/组织机构名称
   */
  @ApiModelProperty(value = "姓名/组织机构名称", required = false)
  private String userName;

  /**
   * 身份证号码/组织机构代码
   */
  @ApiModelProperty(value = "身份证号码/组织机构代码", required = false)
  private String code;

  /**
   * 性别
   */
  @ApiModelProperty(value = "性别", required = false)
  private String sex;

  /**
   * 民族
   */
  @ApiModelProperty(value = "民族", required = false)
  private String civilFamily;

  /**
   * 企业负责人
   */
  @ApiModelProperty(value = "企业负责人", required = false)
  private String responsibleUser;

  /**
   * 企业负责人电话
   */
  @ApiModelProperty(value = "企业负责人电话", required = false)
  private String responsiblePhone;

  /**
   * 法定代表人
   */
  @ApiModelProperty(value = "法定代表人", required = false)
  private String legalUser;

  /**
   * 法定代表人职务
   */
  @ApiModelProperty(value = "法定代表人职务", required = false)
  private String legalUserJob;

  /**
   * 固定电话
   */
  @ApiModelProperty(value = "固定电话", required = false)
  private String fixedTelephone;

  /**
   * 组织机构代码证附件
   */
  @ApiModelProperty(value = "组织机构代码证附件", required = false)
  private String organizationCode;

  /**
   * 身份证正面
   */
  @ApiModelProperty(value = "身份证正面", required = false)
  private String idCardFrontUrl;

  /**
   * 身份证反面
   */
  @ApiModelProperty(value = "身份证反面", required = false)
  private String idCardBackUrl;

  /**
   * 户籍地址/注册地址
   */
  @ApiModelProperty(value = "户籍地址/注册地址", required = false)
  private String permanentAddress;

  /**
   * 当前地址/企业所在地址
   */
  @ApiModelProperty(value = "当前地址/企业所在地址", required = false)
  private String currentAddress;

  /**
   * 邮寄地址
   */
  @ApiModelProperty(value = "邮寄地址", required = false)
  private String mailAddress;

  /**
   * 户籍地址/注册地址详细地址
   */
  @ApiModelProperty(value = "户籍地址/注册地址详细地址", required = false)
  private String pdetailAddress;

  /**
   * 当前地址/企业所在地址详细地址
   */
  @ApiModelProperty(value = "当前地址/企业所在地址详细地址", required = false)
  private String cdetailAddress;

  /**
   * 邮寄地址详细地址
   */
  @ApiModelProperty(value = "邮寄地址详细地址", required = false)
  private String mdetailAddress;

}
